package vista;
import bean.Botonera;
import bean.JLabelCronometro;
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import javabean.JPanelImagen;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

import javax.swing.WindowConstants;


/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class JPartida extends javax.swing.JFrame {
	private JPanelImagen pnlImagenPartida;
	private JBotones pnlBasico;
	private JBotones pnlIntermedio;
	private JBotones pnlAvanzado;
	private JMenu mnBarConsultar;
	private JMenuItem mnItemAvanzado;
	private JMenuItem mnItemIntermedio;
	private JMenuItem mnItemBasico;
	private JMenu jMenu1;
	private JMenuBar mnBarMenu;
	private JButton btnComprobarColores;
	private Botonera pnlColores;
	private JLabelCronometro jLabelCronometro1;
	private JLabel lblDescripcionNivel;
	private JLabel lblNivel;
	private JLabel lblNombreJugador;
	private JLabel lblJugador;
	private String nivelBoton;
	
	private boolean valorBasico;
	private boolean valorIntermedio;
	private boolean valorAvanzado;
	
	public JPartida() {
		super("******** MASTERMIND ********");
		initGUI();
		this.setLocationRelativeTo(null);
		this.setResizable(false);
	}
	
	private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			{
				mnBarMenu = new JMenuBar();
				setJMenuBar(mnBarMenu);
				{
					jMenu1 = new JMenu();
					mnBarMenu.add(jMenu1);
				}
				{
					mnBarConsultar = new JMenu();
					mnBarMenu.add(mnBarConsultar);
					mnBarConsultar.setText("Consultar");
					{
						mnItemBasico = new JMenuItem();
						mnBarConsultar.add(mnItemBasico);
						mnItemBasico.setText("Nivel Basico");
					}
					{
						mnItemIntermedio = new JMenuItem();
						mnBarConsultar.add(mnItemIntermedio);
						mnItemIntermedio.setText("Nivel Intermedio");
					}
					{
						mnItemAvanzado = new JMenuItem();
						mnBarConsultar.add(mnItemAvanzado);
						mnItemAvanzado.setText("Nivel Avanzado");
					}
				}
			}
			{
				pnlImagenPartida = new JPanelImagen();
				getContentPane().add(pnlImagenPartida, BorderLayout.CENTER);
				pnlImagenPartida.setRutaImagen("/imagenes/imagenfondo.png");
				pnlImagenPartida.setPreferredSize(new java.awt.Dimension(852, 740));
				{
					pnlAvanzado = new JBotones();
					pnlImagenPartida.add(pnlAvanzado);
					pnlAvanzado.setBounds(106, 149, 275, 519);
					pnlAvanzado.setBackground(new java.awt.Color(255,255,255));
				}
					{
					pnlIntermedio = new JBotones();
					pnlImagenPartida.add(pnlIntermedio);
					pnlIntermedio.setBounds(106, 149, 231, 482);
					pnlIntermedio.setBackground(new java.awt.Color(255,255,255));
					}
					
					{
						pnlBasico = new JBotones();
						pnlImagenPartida.add(pnlBasico);
						pnlBasico.setBounds(106, 149, 191, 450);
						pnlBasico.setBackground(new java.awt.Color(255,255,255));
					}
					    
					
				}
				{
					pnlColores = new Botonera();
					pnlImagenPartida.add(pnlColores);
					pnlColores.setBounds(51, 29, 512, 56);
					btnComprobarColores = new JButton();
					pnlColores.add(btnComprobarColores);
					btnComprobarColores.setText("COMPROBAR");
					btnComprobarColores.setBounds(370, 9, 131, 36);
					btnComprobarColores.setBackground(new java.awt.Color(255,255,255));
					btnComprobarColores.setActionCommand("Comprobar");
				}
				
				{
					lblJugador = new JLabel();
					pnlImagenPartida.add(lblJugador);
					lblJugador.setText("JUGADOR:");
					lblJugador.setBounds(467, 222, 136, 28);
					lblJugador.setFont(new java.awt.Font("Bitstream Charter",1,20));
				}
				{
					lblNombreJugador = new JLabel();
					pnlImagenPartida.add(lblNombreJugador);
					lblNombreJugador.setText("------------------");
					lblNombreJugador.setBounds(474, 256, 144, 34);
					lblNombreJugador.setFont(new java.awt.Font("Bitstream Charter",0,16));
				}
				{
					lblNivel = new JLabel();
					pnlImagenPartida.add(lblNivel);
					lblNivel.setText("NIVEL:");
					lblNivel.setBounds(467, 315, 86, 30);
					lblNivel.setFont(new java.awt.Font("Bitstream Charter",1,20));
				}
				{
					lblDescripcionNivel = new JLabel();
					pnlImagenPartida.add(lblDescripcionNivel);
					lblDescripcionNivel.setText("--------------------");
					lblDescripcionNivel.setBounds(467, 345, 113, 24);
					lblDescripcionNivel.setFont(new java.awt.Font("Bitstream Charter",0,16));
				}
				{
					jLabelCronometro1 = new JLabelCronometro();
					jLabelCronometro1.Resetear();
					pnlImagenPartida.add(jLabelCronometro1);
					jLabelCronometro1.setBounds(489, 148, 87, 28);
					
				}
			
	
			pack();
			this.setSize(650, 750);
	
		} catch (Exception e) {
			//add your error handling code here
			e.printStackTrace();
		}
		    
		}
	

	public void AddListener(String nivel, ActionListener actionListener){
		this.btnComprobarColores.addActionListener(actionListener);
		this.mnItemAvanzado.addActionListener(actionListener);
		this.mnItemIntermedio.addActionListener(actionListener);
		this.mnItemBasico.addActionListener(actionListener);
		
		if(nivel.equals("Basico")){
			valorBasico=true;		
			for (int i = 0; i < 12; i++)
				for (int j = 0; j < 4; j++)
				{
					this.pnlBasico.getButton(i,j).addActionListener(actionListener);
				}
			}
		
		else if(nivel.equals("Intermedio")){
			valorIntermedio=true;
			for (int a = 0; a < 13; a++)
				for (int e = 0; e < 5; e++)
				{
					this.pnlIntermedio.getButton(a,e).addActionListener(actionListener);
				}
			}
		
		else if(nivel.equals("Avanzado")){
			valorAvanzado=true;
			for (int k = 0; k < 14; k++)
			 	for (int t = 0; t < 6; t++)
				{
			 		this.pnlAvanzado.getButton(k,t).addActionListener(actionListener);
				}
		    }
	}

	public void MostrarSoloPanelBasico(){
		
		pnlBasico.crearboton(12, 4);
		for( int i =1; i < 12; i++){
		 	for (int j = 0; j < 4; j++)
			{
		 		pnlBasico.getButton(i,j).setVisible(false);
			}
		}
		pnlAvanzado.setVisible(false);
		pnlIntermedio.setVisible(false);
	}
	
	public void MostrarSoloPanelIntermedio(){
		
		pnlIntermedio.crearboton(13, 5);
		for( int i =1; i < 13; i++){
		 	for (int j = 0; j < 5; j++)
			{
		 		pnlIntermedio.getButton(i,j).setVisible(false);
			}
		}
		pnlBasico.setVisible(false);
		pnlAvanzado.setVisible(false);
	}
	
	public void MostrarSoloPanelAvanzado(){
		
		pnlAvanzado.crearboton(14, 6);
		for( int i =1; i < 14; i++){
		 	for (int j = 0; j < 6; j++)
			{
		 		pnlAvanzado.getButton(i,j).setVisible(false);
			}
		}
		pnlBasico.setVisible(false);
		pnlIntermedio.setVisible(false);
	}
	
	
	//visible la fila siguiente
	 public void BotonesVisibles(boolean x ,int y,int tipo, String nivel)
	 {

		for(int i = 0; i <tipo; i++)
		{
			if(nivel.equals("Basico"))
				pnlBasico.getButton(y,i).setVisible(x);
			
			else if(nivel.equals("Intermedio"))
				pnlIntermedio.getButton(y,i).setVisible(x);
			
			else if(nivel.equals("Avanzado"))
				pnlAvanzado.getButton(y,i).setVisible(x);
		}
	 }
	 
	//bloquea la fila superior
		public void BloquearBotones(boolean x,int y , int tipo, String nivel)
		   { 		 
			    int j = y--;
			   	 for( int i =0; i < tipo ; i++)
			   		if(nivel.equals("Basico"))
						pnlBasico.getButton(y,i).setEnabled(x);
					
					else if(nivel.equals("Intermedio"))
						pnlIntermedio.getButton(y,i).setEnabled(x);
					
					else if(nivel.equals("Avanzado"))
						pnlAvanzado.getButton(y,i).setEnabled(x); 
		   }
     
	public void CrearMensajeGanador(int puntaje){
		JOptionPane.showMessageDialog(null, "GANASTE "+puntaje+" PUNTOS", "FELICIDADES!!!", JOptionPane.OK_OPTION);
	}
	
	public void CrearMensajePerdedor(){
		JOptionPane.showMessageDialog(null, "PERDISTE", "SIGUE INTENTANDO", JOptionPane.OK_OPTION);
	}
	public void PedirJugador(){
		Object nombre = null;
		while(nombre == null || nombre.equals("")){
			nombre = JOptionPane.showInputDialog(this,"JUGADOR:", "Registrar Jugador",JOptionPane.OK_OPTION);
			if(nombre == null || nombre.equals("")){
				JOptionPane.showMessageDialog(this,"ATENCI�N: Debe escribir un nombre");
			}
			else{
				this.lblNombreJugador.setText(""+nombre);
			}
		}		
	}
	
	public void PedirNivel(){
		Object selectedValue = null;
		String[] valores = {"Basico", "Intermedio","Avanzado" };
		while(selectedValue == null){
			selectedValue = 
		  			JOptionPane.showInputDialog(
			            null, // ventana madre
					    "Seleccione su Nivel", // mensaje
					    "Seleccionar Nivel", // titulo
					     JOptionPane.INFORMATION_MESSAGE, // tipo mensaje
					     null, // icono
					     valores, // valores
					     valores[0] // valor marcado inicialmente
		  					);
		}
		String valor = selectedValue.toString();
		nivelBoton = valor;
		if(valor.equals("Basico")){
			
			MostrarSoloPanelBasico();
		}
		else if(valor.equals("Intermedio")){
			
			MostrarSoloPanelIntermedio();
		 }
		 else if(valor.equals("Avanzado")){
			
			MostrarSoloPanelAvanzado();
		 }
		 this.lblDescripcionNivel.setText(""+selectedValue);
		 this.jLabelCronometro1.Iniciar();
	}

	public String getNivelBoton() {
		return nivelBoton;
	}

	public void setNivelBoton(String nivelBoton) {
		this.nivelBoton = nivelBoton;
	}

	public JBotones getPnlBasico() {
		return pnlBasico;
	}

	public JBotones getPnlIntermedio() {
		return pnlIntermedio;
	}

	public JBotones getPnlAvanzado() {
		return pnlAvanzado;
	}

	public JLabel getLblNombreJugador() {
		return lblNombreJugador;
	}

	public JLabel getLblDescripcionNivel() {
		return lblDescripcionNivel;
	}

	public JLabelCronometro getjLabelCronometro1() {
		return jLabelCronometro1;
	}
	
	public Botonera getBotonera(){
        return pnlColores;
    }

	public boolean getValorBasico() {
		return valorBasico;
	}

	public void setValorBasico(boolean valorBasico) {
		this.valorBasico = valorBasico;
	}

	public boolean getValorIntermedio() {
		return valorIntermedio;
	}

	public void setValorIntermedio(boolean valorIntermedio) {
		this.valorIntermedio = valorIntermedio;
	}

	public boolean getValorAvanzado() {
		return valorAvanzado;
	}

	public void setValorAvanzado(boolean valorAvanzado) {
		this.valorAvanzado = valorAvanzado;
	}
public void getComprovar(boolean x) {
		
		btnComprobarColores.enable(x);
	}
     
}



